package com.tledu.springboot04.service.impl;

import com.tledu.springboot04.domain.Resource;
import com.tledu.springboot04.mapper.IResourceMapper;
import com.tledu.springboot04.service.IResourceService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
@AllArgsConstructor
public class ResourceServiceImpl implements IResourceService {
    private final IResourceMapper resourceMapper;

    public List<Resource> treeList() {
        // 得到了所有的列表
        List<Resource> allList = resourceMapper.list();
        // 定义最终生成树形列表
        List<Resource> treeList = new ArrayList<>();
        // 建立id和资源映射管理
        Map<Integer, Resource> map = new HashMap<>();
        allList.forEach(resource -> map.put(resource.getId(),resource));
        for (Resource resource : allList) {
            // 如果列表不包含的它的父级，就代表这个是一个根节点，直接放到treeList里
            if (!map.containsKey(resource.getParentId())) {
                treeList.add(resource);
            }else {
                // 如果包含，就找到他的父级，放好它的children属性里
                map.get(resource.getParentId()).getChildren().add(resource);
            }
        }
        return treeList;
    }
}
